#include "punto.h"

ListaPunto ls_inicializa(){
	ListaPunto lista = (CabezaPunto*) malloc(sizeof(CabezaPunto));
	if(!lista){
		printf("No se ha podido reservar la memória\n");
		exit(1);
	}
	
	lista->tamanyo = 0;
	lista->primero = NULL;
	lista->ultimo = NULL;
	
	return lista;
}

NodoPunto* ls_nuevoNodo(Punto punto){
	NodoPunto* nodo = (NodoPunto*) malloc(sizeof(NodoPunto));
	if(!nodo){
		printf("No se ha podido reservar la memória\n");
		exit(1);
	}
	
	nodo->punto = punto;
	nodo->siguiente = NULL;	
	
	return nodo;
}

void ls_add(ListaPunto lista, Punto punto){
	NodoPunto* nodo = ls_nuevoNodo(punto);
	lista->tamanyo++;
	
	if(lista->ultimo){
		lista->ultimo->siguiente = nodo;
		lista->ultimo = nodo;
	}
	else{
		lista->primero = nodo;
		lista->ultimo = nodo;
	}
}

void ls_free(ListaPunto lista){
	int i;
	NodoPunto* nod_indice = lista->primero;
	
	while(nod_indice){
		lista->primero = lista->primero->siguiente;			
		free(nod_indice);
		nod_indice = lista->primero;
	}
	
	free(lista);
}
